package com.itheima.d3_abstract;
/*
    在Java中有一个关键字叫：abstract，它就是抽象的意思，可以用它修饰类、成员方法。
    abstract修饰类，这个类就是抽象类；修饰方法，这个方法就是抽象方法。

   抽象类的注意事项、特点
        1 抽象类中不一定有抽象方法，有抽象方法的类一定是抽象类。
        2 类该有的成员（成员变量、方法、构造器）抽象类都可以有。
        3 抽象类最主要的特点：抽象类不能创建对象，仅作为一种特殊的父类，让子类继承并实现。
        4 一个类继承抽象类，必须重写完抽象类的全部抽象方法，否则这个类也必须定义成抽象类。
 */
public class Test1 {

}
class C extends A{
//一个类如果要继承抽象类，需要重写抽象类中所有的抽象方法，或者自身就是抽象类
    public C(int a) {
        super(a);
    }

    @Override
    public void fly() {

    }
}
abstract    class A{
    int a;
    public void run(){
        System.out.println("抽象类的普通方法");
    }

    public A(int a) {
        this.a = a;
    }
    //抽象方法没有方法体
    abstract public void fly();
}
//抽象类中不一定有抽象方法，但是有抽象方法的类一定是抽象类
class B{
    public void run(){
        System.out.println("普通类中的抽象方法");
    }
}

